#include "qjsbind/qjsbind.h"
#include <souistd.h>
#include <interface/SFactory-i.h>

#include "exports/exp_types.h"
using namespace SOUI;
using namespace qjsbind;

#include "exports/exp_globals.h"
#include "exports/exp_basic.h"
#include "exports/exp_IObjRef.h"
#include "exports/exp_IString.h"
#include "exports/exp_IXml.h"
#include "exports/exp_ISouiFac.h"
#include "exports/exp_IApp.h"
#include "exports/exp_IResProvider.h"
#include "exports/exp_IResProviderMgr.h"
#include "exports/exp_ITimer.h"
#include "exports/exp_INativeWnd.h"
#include "exports/exp_IObject.h"
#include "exports/exp_IWindow.h"
#include "exports/exp_ICtrls.h"
#include "exports/exp_IHostWnd.h"
#include "exports/exp_IEvt.h"
#include "exports/exp_IAnimation.h"
#include "exports/exp_IValueAnimator.h"
#include "exports/exp_IInterpolator.h"
#include "exports/exp_IMenu.h"
#include "exports/exp_IMenuEx.h"
#include "exports/exp_IAdapter.h"


#include "exports/exp_SString.h"
#include "exports/exp_SHostWnd.h"
#include "exports/exp_MsgHandlerProxy.h"
#include "exports/exp_EvtHandlerProxy.h"
#include "exports/exp_SEventArg.h"
#include "exports/exp_qjsAdapter.h"
#include "exports/exp_SWindow.h"

namespace SOUI {

	BOOL ExportSoui(qjsbind::Context* context) {
		qjsbind::Module* module = context->NewModule("soui4");
		Exp_Global(module);
		Exp_Basic(module);

		Exp_IObjRef(module);
		Exp_IStringA(module);
		Exp_IStringW(module);
		Exp_IXml(module);
		Exp_ISouiFactory(module);
		Exp_IApp(module);
		Exp_IResProvider(module);
		Exp_IResProviderMgr(module);
		Exp_ITimer(module);
		Exp_INativeWnd(module);
		Exp_IObject(module);
		Exp_IWindow(module);
		Exp_IHostWnd(module);
		Exp_IHostDialog(module);
		Exp_IEvtArg(module);
		Exp_IEvtSlot(module);
		Exp_IAnimation(module);
		Exp_IValueAnimator(module);
		Exp_IInterpolator(module);
		Exp_IMenu(module);
		Exp_IMenuEx(module);
		Exp_IAdapter(module);

		Exp_SStringA(module);
		Exp_SStringW(module);
		Exp_SHostWnd(module);
		Exp_SHostDialog(module);
		Exp_MsgHandlerProxy(module);
		Exp_EvtHandlerProxy(module);

		Exp_SEventArg(module);
		Exp_QjsAdapter(module);
		Exp_SWindow(module);
		Exp_ICtrls(module);
		return TRUE;
	}

}